home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / adodb / xsl / convert-0.2-0.1.xsl < prev    next >
Extensible Markup Language  |  2004-02-06  |  6KB  |  207 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0"
  3.     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. >
  5.     <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>
  6.     
  7.     <!-- Schema -->
  8.     <xsl:template match="/">
  9.         <xsl:comment>
  10. ADODB XMLSchema
  11. http://adodb-xmlschema.sourceforge.net
  12. </xsl:comment>
  13.         
  14.         <xsl:element name="schema">
  15.             <xsl:attribute name="version">0.1</xsl:attribute>
  16.             
  17.             <xsl:apply-templates select="schema/table|schema/sql"/>
  18.         </xsl:element>
  19.     </xsl:template>
  20.     
  21.     <!-- Table -->
  22.     <xsl:template match="table">
  23.         <xsl:variable name="table_name" select="@name"/>
  24.         
  25.         <xsl:element name="table">
  26.             <xsl:attribute name="name"><xsl:value-of select="$table_name"/></xsl:attribute>
  27.             
  28.             <xsl:if test="string-length(@platform) > 0">
  29.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  30.             </xsl:if>
  31.             
  32.             <xsl:if test="string-length(@version) > 0">
  33.                 <xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
  34.             </xsl:if>
  35.             
  36.             <xsl:apply-templates select="descr[1]"/>
  37.             
  38.             <xsl:choose>
  39.                 <xsl:when test="count(DROP) > 0">
  40.                     <xsl:element name="DROP"/>
  41.                 </xsl:when>
  42.                 <xsl:otherwise>
  43.                     <xsl:apply-templates select="field"/>
  44.                 </xsl:otherwise>
  45.             </xsl:choose>
  46.             
  47.             <xsl:apply-templates select="constraint"/>
  48.             
  49.         </xsl:element>
  50.         
  51.         <xsl:apply-templates select="index"/>
  52.     </xsl:template>
  53.     
  54.     <!-- Field -->
  55.     <xsl:template match="field">
  56.         <xsl:element name="field">
  57.             <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  58.             <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
  59.             
  60.             <xsl:if test="string-length(@size) > 0">
  61.                 <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
  62.             </xsl:if>
  63.             
  64.             <xsl:choose>
  65.                 <xsl:when test="count(PRIMARY) > 0">
  66.                     <xsl:element name="PRIMARY"/>
  67.                 </xsl:when>
  68.                 <xsl:when test="count(KEY) > 0">
  69.                     <xsl:element name="KEY"/>
  70.                 </xsl:when>
  71.                 <xsl:when test="count(NOTNULL) > 0">
  72.                     <xsl:element name="NOTNULL"/>
  73.                 </xsl:when>
  74.             </xsl:choose>
  75.             
  76.             <xsl:choose>
  77.                 <xsl:when test="count(AUTO) > 0">
  78.                     <xsl:element name="AUTO"/>
  79.                 </xsl:when>
  80.                 <xsl:when test="count(AUTOINCREMENT) > 0">
  81.                     <xsl:element name="AUTOINCREMENT"/>
  82.                 </xsl:when>
  83.             </xsl:choose>
  84.             
  85.             <xsl:choose>
  86.                 <xsl:when test="count(DEFAULT) > 0">
  87.                     <xsl:element name="DEFAULT">
  88.                         <xsl:attribute name="value">
  89.                             <xsl:value-of select="DEFAULT[1]/@value"/>
  90.                         </xsl:attribute>
  91.                     </xsl:element>
  92.                 </xsl:when>
  93.                 <xsl:when test="count(DEFDATE) > 0">
  94.                     <xsl:element name="DEFDATE">
  95.                         <xsl:attribute name="value">
  96.                             <xsl:value-of select="DEFDATE[1]/@value"/>
  97.                         </xsl:attribute>
  98.                     </xsl:element>
  99.                 </xsl:when>
  100.                 <xsl:when test="count(DEFTIMESTAMP) > 0">
  101.                     <xsl:element name="DEFDTIMESTAMP">
  102.                         <xsl:attribute name="value">
  103.                             <xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
  104.                         </xsl:attribute>
  105.                     </xsl:element>
  106.                 </xsl:when>
  107.             </xsl:choose>
  108.             
  109.             <xsl:if test="count(NOQUOTE) > 0">
  110.                 <xsl:element name="NOQUOTE"/>
  111.             </xsl:if>
  112.             
  113.             <xsl:apply-templates select="constraint"/>
  114.         </xsl:element>
  115.     </xsl:template>
  116.     
  117.     <!-- Constraint -->
  118.     <xsl:template match="constraint">
  119.         <xsl:element name="constraint">
  120.             <xsl:value-of select="normalize-space(text())"/>
  121.         </xsl:element>
  122.     </xsl:template>
  123.     
  124.     <!-- Index -->
  125.     <xsl:template match="index">
  126.         <xsl:element name="index">
  127.             <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  128.             <xsl:attribute name="table"><xsl:value-of select="../@name"/></xsl:attribute>
  129.             
  130.             <xsl:apply-templates select="descr[1]"/>
  131.             
  132.             <xsl:if test="count(CLUSTERED) > 0">
  133.                 <xsl:element name="CLUSTERED"/>
  134.             </xsl:if>
  135.             
  136.             <xsl:if test="count(BITMAP) > 0">
  137.                 <xsl:element name="BITMAP"/>
  138.             </xsl:if>
  139.             
  140.             <xsl:if test="count(UNIQUE) > 0">
  141.                 <xsl:element name="UNIQUE"/>
  142.             </xsl:if>
  143.             
  144.             <xsl:if test="count(FULLTEXT) > 0">
  145.                 <xsl:element name="FULLTEXT"/>
  146.             </xsl:if>
  147.             
  148.             <xsl:if test="count(HASH) > 0">
  149.                 <xsl:element name="HASH"/>
  150.             </xsl:if>
  151.             
  152.             <xsl:choose>
  153.                 <xsl:when test="count(DROP) > 0">
  154.                     <xsl:element name="DROP"/>
  155.                 </xsl:when>
  156.                 <xsl:otherwise>
  157.                     <xsl:apply-templates select="col"/>
  158.                 </xsl:otherwise>
  159.             </xsl:choose>
  160.         </xsl:element>
  161.     </xsl:template>
  162.     
  163.     <!-- Index Column -->
  164.     <xsl:template match="col">
  165.         <xsl:element name="col">
  166.             <xsl:value-of select="normalize-space(text())"/>
  167.         </xsl:element>
  168.     </xsl:template>
  169.     
  170.     <!-- SQL QuerySet -->
  171.     <xsl:template match="sql">
  172.         <xsl:element name="sql">
  173.             <xsl:if test="string-length(@platform) > 0">
  174.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  175.             </xsl:if>
  176.             
  177.             <xsl:if test="string-length(@key) > 0">
  178.                 <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
  179.             </xsl:if>
  180.             
  181.             <xsl:if test="string-length(@prefixmethod) > 0">
  182.                 <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
  183.             </xsl:if>
  184.             
  185.             <xsl:apply-templates select="descr[1]"/>
  186.             <xsl:apply-templates select="query"/>
  187.         </xsl:element>
  188.     </xsl:template>
  189.     
  190.     <!-- Query -->
  191.     <xsl:template match="query">
  192.         <xsl:element name="query">
  193.             <xsl:if test="string-length(@platform) > 0">
  194.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  195.             </xsl:if>
  196.             
  197.             <xsl:value-of select="normalize-space(text())"/>
  198.         </xsl:element>
  199.     </xsl:template>
  200.     
  201.     <!-- Description -->
  202.     <xsl:template match="descr">
  203.         <xsl:element name="descr">
  204.             <xsl:value-of select="normalize-space(text())"/>
  205.         </xsl:element>
  206.     </xsl:template>
  207. </xsl:stylesheet>